home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / rdir.zip / INTVID.ASM < prev    next >
Assembly Source File  |  1987-06-14  |  1KB  |  61 lines

  1.  
  2. ; Special intvid () procedure, had to use this because int86 would not
  3. ; work for within an ISR.
  4.  
  5. _TEXT   segment para public 'CODE'
  6.         assume  cs:_TEXT
  7. _TEXT   ends
  8. _TEXT   segment
  9.  
  10. ; Register structure definition
  11.  
  12. vid_regs struc
  13.         r_ax    dw ?
  14.         r_bx    dw ?
  15.         r_cx    dw ?
  16.         r_dx    dw ?
  17. vid_regs ends
  18.  
  19. _intvid proc    near
  20.         public  _intvid
  21.  
  22.         push    bp                      ;set up stack frame
  23.         mov     bp,sp
  24.         push    si                      ;save si
  25.  
  26.         mov     si,word ptr [bp+4]      ;load pointer to vidregs
  27.  
  28.         mov     ax,[si].r_ax            ;copy in all of the registers
  29.         mov     bx,[si].r_bx
  30.         mov     cx,[si].r_cx
  31.         mov     dx,[si].r_dx
  32.  
  33.         int     10h                     ;call video BIOS
  34.  
  35.         cmp     word ptr [bp+6],0       ;see if need to be stored
  36.         je      exit                    ;if not don't store
  37.  
  38.         mov     [si].r_ax,ax            ;put the registers away
  39.         mov     [si].r_bx,bx
  40.         mov     [si].r_cx,cx
  41.         mov     [si].r_dx,dx
  42.  
  43. exit:
  44.         pop     si                      ;restore si
  45.         pop     bp                      ;restore bp
  46.         ret                             ;return to the caller
  47.  
  48. _intvid endp
  49.  
  50. _TEXT   ends
  51.  
  52.          end
  53.  
  54.          
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.